/*
 * Copyright © 2021 Dowsure
 * https://www.dowsure.com/
 *
 * All rights reserved.
 */

package com.dowsure.apisaas.enums;

/**
 * @description: 币种
 * @author: Dowsure
 **/
public enum CurrencyEnums {

    CNY("CNY", "人民币", "中国"),
    USD("USD", "美元", "美国"),
    EUR("EUR", "欧元", "欧盟"),
    GBP("GBP", "英镑", "英国"),
    AUD("AUD", "澳元", "澳大利亚"),
    CAD("CAD", "加元", "加拿大"),
    JPY("JPY", "日元", "日本"),
    HKD("HKD", "港币", "香港"),
    INR("INR", "印度卢比", "印度"),
    ZAR("ZAR", "南非兰特", "南非"),
    TWD("TWD", "新台币", "台湾"),
    MOP("MOP", "澳门元", "澳门"),
    KRW("KRW", "韩元", "韩国"),
    THB("THB", "泰铢", "泰国"),
    NZD("NZD", "新西兰元", "新西兰"),
    SGD("SGD", "新加坡元", "新加坡"),
    AED("AED", "阿联酋迪拉姆", "阿联酋"),
    AFN("AFN", "阿富汗尼", "阿富汗"),
    ALL("ALL", "阿尔巴尼列克", "阿尔巴尼"),
    AMD("AMD", "亚美尼亚德拉姆", "亚美尼亚"),
    ANG("ANG", "荷兰盾", "荷兰"),
    AOA("AOA", "安哥拉宽扎", "安哥拉"),
    ARS("ARS", "阿根廷比索", "阿根廷"),
    AWG("AWG", "阿鲁巴弗罗林", "阿鲁巴"),
    AZN("AZN", "阿塞拜疆马纳特", "阿塞拜疆"),
    BAM("BAM", "波黑可兑换马克", "波黑"),
    BBD("BBD", "巴巴多斯元", "巴巴多斯"),
    BDT("BDT", "孟加拉国塔卡", "孟加拉国"),
    BGN("BGN", "保加利亚列弗", "保加利亚"),
    BHD("BHD", "巴林第纳尔", "巴林"),
    BIF("BIF", "布隆迪法郎", "布隆迪"),
    BMD("BMD", "百慕大元", "百慕大"),
    BND("BND", "文莱元", "文莱"),
    BOB("BOB", "玻利维亚诺", "玻利维亚"),
    BRL("BRL", "巴西雷亚尔", "巴西"),
    BSD("BSD", "巴哈马元", "巴哈马元"),
    BTC("BTC", "比特币", "中本聪"),
    BTN("BTN", "不丹努扎姆", "不丹"),
    BWP("BWP", "博茨瓦纳普拉", "博茨瓦纳"),
    BYR("BYR", "白俄罗斯卢布", "白俄罗斯"),
    BZD("BZD", "伯利兹元", "伯利兹"),
    CDF("CDF", "刚果法郎", "刚果"),
    CHF("CHF", "瑞士法郎", "瑞士"),
    CLF("CLF", "智利比索(基金)", "智利"),
    CLP("CLP", "智利比索", "智利"),
    CNH("CNH", "中国离岸人民币", "中国"),
    COP("COP", "哥伦比亚比索", "哥伦比亚"),
    CRC("CRC", "哥斯达黎加科朗", "哥斯达黎加"),
    CUP("CUP", "古巴比索", "古巴"),
    CVE("CVE", "佛得角埃斯库多", "佛得角"),
    CYP("CYP", "塞普路斯镑", "塞普路斯"),
    CZK("CZK", "捷克克朗", "捷克"),
    DEM("DEM", "德国马克", "德国"),
    DJF("DJF", "吉布提法郎", "吉布提"),
    DKK("DKK", "丹麦克朗", "丹麦"),
    DOP("DOP", "多米尼加比索", "多米尼加"),
    DZD("DZD", "阿尔及利亚第纳尔", "阿尔及利亚"),
    ECS("ECS", "厄瓜多尔苏克雷", "厄瓜多尔"),
    EGP("EGP", "埃及镑", "埃及"),
    ERN("ERN", "厄立特里亚纳克法", "厄立特里亚"),
    ETB("ETB", "埃塞俄比亚比尔", "埃塞俄比亚"),
    FJD("FJD", "斐济元", "斐济"),
    FKP("FKP", "福克兰群岛镑", "福克兰群岛"),
    FRF("FRF", "法国法郎", "法国"),
    GEL("GEL", "格鲁吉亚拉里", "格鲁吉亚"),
    GHS("GHS", "加纳塞地", "加纳"),
    GIP("GIP", "直布罗陀镑", "直布罗陀"),
    GMD("GMD", "冈比亚达拉西", "冈比亚"),
    GNF("GNF", "几内亚法郎", "几内亚"),
    GTQ("GTQ", "危地马拉格查尔", "危地马拉"),
    GYD("GYD", "圭亚那元", "圭亚那"),
    HNL("HNL", "洪都拉斯伦皮拉", "洪都拉斯"),
    HRK("HRK", "克罗地亚库纳", "克罗地亚"),
    HTG("HTG", "海地古德", "海地"),
    HUF("HUF", "匈牙利福林", "匈牙利"),
    IDR("IDR", "印度尼西亚卢比", "印度尼西亚"),
    IEP("IEP", "爱尔兰镑", "爱尔兰"),
    ILS("ILS", "以色列新谢克尔", "以色列"),
    IQD("IQD", "伊拉克第纳尔", "伊拉克"),
    IRR("IRR", "伊朗里亚尔", "伊朗"),
    ISK("ISK", "冰岛克郎", "冰岛"),
    ITL("ITL", "意大利里拉", "意大利"),
    JMD("JMD", "牙买加元", "牙买加"),
    JOD("JOD", "约旦第纳尔", "约旦"),
    KES("KES", "肯尼亚先令", "肯尼亚"),
    KGS("KGS", "吉尔吉斯斯坦索姆", "吉尔吉斯斯坦"),
    KHR("KHR", "柬埔寨瑞尔", "柬埔寨"),
    KMF("KMF", "科摩罗法郎", "科摩罗"),
    KPW("KPW", "朝鲜元", "朝鲜"),
    KWD("KWD", "科威特第纳尔", "科威特"),
    KYD("KYD", "开曼群岛元", "开曼群岛"),
    KZT("KZT", "哈萨克斯坦坚戈", "哈萨克斯坦"),
    LAK("LAK", "老挝基普", "老挝"),
    LBP("LBP", "黎巴嫩镑", "黎巴嫩"),
    LKR("LKR", "斯里兰卡卢比", "斯里兰卡"),
    LRD("LRD", "利比里亚元", "利比里"),
    LSL("LSL", "莱索托洛蒂", "莱索托"),
    LTL("LTL", "立陶宛立特", "立陶宛"),
    LVL("LVL", "拉脱维亚拉特", "拉脱维亚"),
    LYD("LYD", "利比亚第纳尔", "利比亚"),
    MAD("MAD", "摩洛哥迪拉姆", "摩洛哥"),
    MDL("MDL", "摩尔多瓦列伊", "摩尔多瓦"),
    MGA("MGA", "马达加斯加阿里亚里", "马达加斯加"),
    MKD("MKD", "马其顿代纳尔", "马其顿"),
    MMK("MMK", "缅甸元", "缅甸"),
    MNT("MNT", "蒙古图格里克", "蒙古"),
    MRO("MRO", "毛里塔尼亚乌吉亚", "毛里塔尼亚"),
    MUR("MUR", "毛里求斯卢比", "毛里求斯"),
    MVR("MVR", "马尔代夫拉菲亚", "马尔代夫"),
    MWK("MWK", "马拉维克瓦查", "马拉维"),
    MXN("MXN", "墨西哥比索", "墨西哥"),
    MXV("MXV", "墨西哥(资金)", "墨西哥"),
    MYR("MYR", "林吉特", "马来西亚"),
    MZN("MZN", "莫桑比克新梅蒂卡尔", "莫桑比克"),
    NAD("NAD", "纳米比亚元", "纳米比亚"),
    NGN("NGN", "尼日利亚奈拉", "尼日利亚"),
    NIO("NIO", "尼加拉瓜新科多巴", "尼加拉瓜"),
    NOK("NOK", "挪威克朗", "挪威"),
    NPR("NPR", "尼泊尔卢比", "尼泊尔"),
    OMR("OMR", "阿曼里亚尔", "阿曼"),
    PAB("PAB", "巴拿马巴波亚", "巴拿马"),
    PEN("PEN", "秘鲁新索尔", "秘鲁"),
    PGK("PGK", "巴布亚新几内亚基那", "巴布亚新几内亚"),
    PHP("PHP", "菲律宾比索", "菲律宾"),
    PKR("PKR", "巴基斯坦卢比", "巴基斯坦"),
    PLN("PLN", "波兰兹罗提", "波兰"),
    PYG("PYG", "巴拉圭瓜拉尼", "巴拉圭"),
    QAR("QAR", "卡塔尔里亚尔", "卡塔尔"),
    RON("RON", "罗马尼亚列伊", "罗马尼亚"),
    RSD("RSD", "塞尔维亚第纳尔", "塞尔维亚"),
    RUB("RUB", "俄罗斯卢布", "俄罗斯"),
    RWF("RWF", "卢旺达法郎", "卢旺达"),
    SAR("SAR", "沙特里亚尔", "沙特阿拉伯"),
    SBD("SBD", "所罗门群岛元", "所罗门群岛"),
    SCR("SCR", "塞舌尔卢比", "塞舌尔"),
    SDG("SDG", "苏丹镑", "苏丹"),
    SEK("SEK", "瑞典克朗", "瑞典"),
    SHP("SHP", "圣赫勒拿镑", "圣赫勒拿(英属)"),
    SIT("SIT", "斯洛文尼亚托拉尔", "斯洛文尼亚"),
    SLL("SLL", "塞拉利昂利昂", "塞拉利昂"),
    SOS("SOS", "索马里先令", "索马里"),
    SRD("SRD", "苏里南元", "苏里南元"),
    STD("STD", "圣多美多布拉", "圣多美和普林西比"),
    SVC("SVC", "萨尔瓦多科朗", "萨尔瓦多"),
    SYP("SYP", "叙利亚镑", "叙利亚"),
    SZL("SZL", "斯威士兰里兰吉尼", "斯威士兰"),
    TJS("TJS", "塔吉克斯坦索莫尼", "塔吉克斯坦"),
    TMT("TMT", "土库曼斯坦马纳特", "土库曼斯坦"),
    TND("TND", "突尼斯第纳尔", "突尼斯"),
    TOP("TOP", "汤加潘加", "汤加"),
    TRY("TRY", "土耳其里拉", "土耳其"),
    TTD("TTD", "特立尼达多巴哥元", "特立尼达多巴哥"),
    TZS("TZS", "坦桑尼亚先令", "坦桑尼亚"),
    UAH("UAH", "乌克兰格里夫纳", "乌克兰"),
    UGX("UGX", "乌干达先令", "乌干达"),
    UYU("UYU", "乌拉圭比索", "乌拉圭"),
    UZS("UZS", "乌兹别克斯坦苏姆", "乌兹别克斯坦"),
    VEF("VEF", "委内瑞拉玻利瓦尔", "委内瑞拉"),
    VND("VND", "越南盾", "越南"),
    VUV("VUV", "瓦努阿图瓦图", "瓦努阿图"),
    WST("WST", "萨摩亚塔拉", "萨摩亚"),
    YER("YER", "也门里亚尔", "也门"),
    ZMW("ZMW", "赞比亚克瓦查", "赞比亚"),
    ZWL("ZWL", "津巴布韦元", "津巴布韦"),
    XAF("XAF", "中非法郎", "中非经济共同体"),
    XCD("XCD", "东加勒比元", "加勒比海(英属)"),
    XDR("XDR", "IMF特别提款权", "国际货币基金组织"),
    XOF("XOF", "西非法郎", "非洲金融共同体"),
    XPF("XPF", "太平洋法郎", "三个太平洋辖区(法属)");

    /**
     * 币种代码
     */
    private String currencyCode;

    /**
     * 币种名称
     */
    private String currencyName;

    /**
     * 所属的国家/地区
     */
    private String region;

    CurrencyEnums(String currencyCode, String currencyName, String region){
        this.currencyCode = currencyCode;
        this.currencyName = currencyName;
        this.region = region;
    }

    public String getValue() {
        return currencyCode;
    }

    @Override
    public String toString() {
        return String.valueOf(currencyCode);
    }

    public static CurrencyEnums fromValue(String text) {
        for (CurrencyEnums b : CurrencyEnums.values()) {
            if (String.valueOf(b.currencyCode).equals(text)) {
                return b;
            }
        }
        return null;
    }

}
